﻿YUI.add('home-view', function (Y) {

    Y.HomeView = Y.Base.create('HomeView', Y.View, [], {
        events: {
            '.refreshPendientes': {
                click: 'refreshPendientes'
            }
        },
        refreshPendientes: function (ev) {
            Y.one('#refreshAnimation').addClass('fa-spin')

            var examenesPendientes = new Y.Calendarizaciones();
            var these = that, b = examenesPendientes.load({ urlName: 'examenesPendientes', idEstudiante: amplify.store('datosEstudiante').Id }, function () {

                var datos = examenesPendientes.toArray()
                var tableBody = Y.one('#examenesPendientes tbody');
                tableBody.remove();
                var calendario = null;
                for (var i = 0; i < datos.length; i++) {
                    calendario = datos[0].getAttrs();

                    tableBody.append('<tr><td>' + calendario.IdCuestionario + '</td><td>' +
                        calendario.Fecha + '</td><td>' + calendario.FechaCierre + '</td><td>' + calendario.Descripcion +
                        '</td><td>' + calendario.Intentos + '</td><td>' + calendario.TiempoExamen +
                        '</td><td><a class="btn btn-success" href="/evaluacion/' + calendario.IdCuestionario + '/' + calendario.IdCalendarizacion + '" >Rendir</a></td></tr>');
                }
                Y.one('#refreshAnimation').removeClass('fa-spin')
            });

        },
        render: function () {
            var template = '';
            var userInfo = amplify.store('userInfo');
            if (userInfo.Role === 'Administrador') {
                template = 'administradores';
                Y.one('#catalogosOption').show();
                Y.one('#personasOption').show();
                Y.one('#calificacionesOption').show();
            } else if (userInfo.Role === 'Docente') {
                template = 'docentes';
                Y.one('#cuestionariosOption').show();
                Y.one('#examenesOption').show();
                Y.one('#calificacionesOption').show();
            } else if (userInfo.Role === 'Estudiante') {
                template = 'estudiantes';
                Y.one('#misexamenesestudiante').show();
            } else if (userInfo.Role === 'Representante') {
                template = 'representantes';
            }

            var that = this,
                    request = Y.io('/ExcellentProject/scripts/views/templates/' + template + '.html', {
                        on: {
                            complete: function (id, response) {



                                var template = response.responseText;

                                try {

                                    //try {
                                    //    $('#table_id_examenesActivos').parent().replaceWith('');
                                    //    $('#table_id_examenesInactivos').parent().replaceWith('');
                                    //    $('#table_id_examenesCaducados').parent().replaceWith('');
                                    //} catch (err) {
                                    //    console.log(err)
                                    //}

                                    that.get('container').setHTML(template)
                                    Y.one('#nombrePerfil').set('innerHTML', userInfo.Role);
                                    amplify.store('perfilUsuario', userInfo.Role)
                                    if (userInfo.Role === 'Estudiante') {


                                        //Obtencion de los examenes pendientes
                                        var estudiante = new Y.Estudiante();

                                        debugger
                                        var those = that, a = estudiante.load({ urlName: 'obtenerPorUsuario', usuario: amplify.store('userData').userName }, function () {
                                            amplify.store('datosEstudiante', estudiante.getAttrs())
                                            var nombreCompleto = estudiante.get('Nombre') + ' ' + estudiante.get('Apellido')
                                            Y.one('#nombreUsuario').set('innerHTML', nombreCompleto)
                                            Y.one('#userName').set('innerHTML', nombreCompleto);
                                            var examenesPendientes = new Y.Calendarizaciones();
                                            var these = that, b = examenesPendientes.load({ urlName: 'examenesPendientes', idPersona: estudiante.get('Id') }, function () {

                                                var datos = examenesPendientes.toJSON()
                                                var tableBody = Y.one('#examenesPendientes tbody');
                                                var calendario = null;
                                                var lista = [];
                                                for (var i = 0; i < datos.length; i++) {
                                                    calendario = datos[i];

                                                    lista.push({
                                                        content: calendario.Descripcion,
                                                        endDate: new Date(calendario.FechaCierre),
                                                        startDate: new Date(calendario.Fecha)
                                                    });

                                                    tableBody.append('<tr><td>' + calendario.IdCuestionario + '</td><td>' +
                                                        calendario.Fecha + '</td><td>' + calendario.FechaCierre + '</td><td>' + calendario.Descripcion +
                                                        '</td><td>' + calendario.Intentos + '</td><td>' + calendario.TiempoExamen +
                                                        '</td><td><a class="btn btn-success" href="/evaluacion/' + calendario.IdCuestionario + '/' + calendario.IdCalendarizacion + '" >Rendir</a></td></tr>');
                                                }

                                                var agendaView = new Y.SchedulerAgendaView();
                                                var dayView = new Y.SchedulerDayView();
                                                var eventRecorder = new Y.SchedulerEventRecorder();
                                                var monthView = new Y.SchedulerMonthView();
                                                var weekView = new Y.SchedulerWeekView();

                                                new Y.Scheduler(
                                                  {
                                                      boundingBox: '#myScheduler',
                                                      date: new Date(),
                                                      items: lista,
                                                      render: true,
                                                      //views: [weekView]
                                                      views: [dayView, weekView, monthView, agendaView]
                                                  }
                                                );
                                            });
                                        });

                                        // ESTADISTICAS 
                                        YUI().use('charts', function (Y) {

                                            var myAxes = {
                                                totals: {
                                                    keys: ["total"],
                                                    position: "left",
                                                    type: "numeric",
                                                    styles: {
                                                        majorTicks: {
                                                            display: "none"
                                                        }
                                                    }
                                                },
                                                dateRange: {
                                                    keys: ["Habilidad"],
                                                    position: "bottom",
                                                    type: "category",
                                                    styles: {
                                                        majorTicks: {
                                                            display: "none"
                                                        },
                                                        label: {
                                                            rotation: -45,
                                                            margin: { top: 5 }
                                                        }
                                                    }
                                                }
                                            };

                                            var accountsGraph = new Y.Chart({
                                                dataProvider: [
                                                      { "Habilidad": "Listening", "total": "0.2" },
                                                      { "Habilidad": "Reading", "total": "0.4" },
                                                      { "Habilidad": "Grammar", "total": "0.4" },
                                                ],
                                                render: "#mychart",
                                                type: "column",
                                                categoryKey: "Habilidad",
                                                axes: myAxes,
                                                horizontalGridlines: true
                                            });
                                        });

                                    }
                                    else if (userInfo.Role == 'Docente') {
                                        Y.one('#linkInformacion').set('href', '/misexamenes')


                                        var docente = new Y.Docente();
                                        debugger
                                        var those = that, a = docente.load({ headers: amplify.store('authorization'), urlName: 'obtenerPorUsuario', usuario: amplify.store('userData').userName }, function () {
                                            amplify.store('datosDocente', docente.getAttrs());
                                            var nombreCompleto = docente.get('Nombre') + ' ' + docente.get('Apellido');
                                            Y.one('#nombreUsuario').set('innerHTML', nombreCompleto);
                                            Y.one('#userName').set('innerHTML', nombreCompleto);
                                            debugger
                                            ////////////////////////////

                                            var examenesActivos = new Y.ConsultaExamenes();
                                            var examenesInactivos = new Y.ConsultaExamenes();
                                            var examenesCaducados = new Y.ConsultaExamenes();
                                            var t1 = those, x = examenesActivos.load({ urlName: 'Activos' }, function () {
                                                var t2 = t1, b = examenesInactivos.load({ urlName: 'Inactivos' }, function () {
                                                    var t3 = t2, c = examenesCaducados.load({ urlName: 'Caducados' }, function () {


                                                        var listActivos = examenesActivos.toJSON();
                                                        var listInactivos = examenesInactivos.toJSON();
                                                        var listCaducados = examenesCaducados.toJSON();
                                                        debugger
                                                        // TABLA DE EXAMENES ACTIVOS
                                                        var tableActivos = $('#table_id_examenesActivos').DataTable({
                                                            "language": {
                                                                "search": "Buscar:",
                                                                "lengthMenu": "Items por página: _MENU_",
                                                                "info": "Items del _START_ al _END_ de _TOTAL_ items.",
                                                                "emptyTable": "Items no disponibles.",
                                                                "infoEmpty": "0 ítems.",
                                                                "paginate": {
                                                                    "next": "Siguiente",
                                                                    "previous": "Anterior",
                                                                    "first": "Primero",
                                                                    "last": "Ultimo"
                                                                }
                                                            },
                                                            "paging": true,
                                                            retrieve: true,
                                                            data: listActivos,
                                                            "rowCallback": function (row, aData) {
                                                                debugger
                                                                $('td:eq(0)', row);
                                                                $('td:eq(8)', row).html('<a title="Editar" class="btn btn-warning" href="/misexamenes/' + aData.IdCalendarizacion + '"> ' +
                                                                 '<i class="fa fa-pencil">' + '</i>' + '<span class="tooltip"></span></a>');
                                                                $('td:eq(9)', row).html('<a title="Eliminar" class="btn btn-danger" href="/misexamenes/eliminar/' + aData.IdCalendarizacion + '"> ' +
                                                                 '<i class="fa fa-trash-o">' + '</i>' + '<span class="tooltip"></span></a>');
                                                            },
                                                            columns: [
                                                                { data: 'Cuestionario' },
                                                                { data: 'Descripcion' },
                                                                { data: 'Intentos' },
                                                                { data: 'TiempoExamen' },
                                                                { data: 'Fecha' },
                                                                { data: 'FechaCierre' },
                                                                { data: 'NombreCurso' },
                                                                { data: 'Estado' },
                                                                { data: 'IdCalendarizacion' },
                                                                { data: 'IdCalendarizacion' }
                                                            ]
                                                        });
                                                        tableActivos.draw();

                                                        // TABLA DE EXAMENES INACTIVOS

                                                        var tableInactivos = $('#table_id_examenesInactivos').DataTable({
                                                            "language": {
                                                                "search": "Buscar:",
                                                                "lengthMenu": "Items por página: _MENU_",
                                                                "info": "Items del _START_ al _END_ de _TOTAL_ items.",
                                                                "emptyTable": "Items no disponibles.",
                                                                "infoEmpty": "0 ítems.",
                                                                "paginate": {
                                                                    "next": "Siguiente",
                                                                    "previous": "Anterior",
                                                                    "first": "Primero",
                                                                    "last": "Ultimo"
                                                                }
                                                            },
                                                            "paging": true,
                                                            retrieve: true,
                                                            data: listInactivos,
                                                            "rowCallback": function (row, aData) {
                                                                debugger
                                                                $('td:eq(8)', row).html('<a title="Editar" class="btn btn-warning" href="/misexamenes/' + aData.IdCalendarizacion + '"> ' +
                                                                 '<i class="fa fa-pencil">' + '</i>' + '<span class="tooltip"></span></a>');
                                                                $('td:eq(9)', row).html('<a title="Eliminar" class="btn btn-danger" href="/misexamenes/eliminar/' + aData.IdCalendarizacion + '"> ' +
                                                                 '<i class="fa fa-trash-o">' + '</i>' + '<span class="tooltip"></span></a>');
                                                            },
                                                            columns: [
                                                                 { data: 'Cuestionario' },
                                                                 { data: 'Descripcion' },
                                                                 { data: 'Intentos' },
                                                                 { data: 'TiempoExamen' },
                                                                 { data: 'Fecha' },
                                                                 { data: 'FechaCierre' },
                                                                 { data: 'NombreCurso' },
                                                                 { data: 'Estado' },
                                                                 { data: 'IdCalendarizacion' },
                                                                 { data: 'IdCalendarizacion' }
                                                            ]
                                                        });
                                                        tableInactivos.draw()
                                                        // TABLA DE EXAMENES CADUCADOS
                                                        var tableCaducados = $('#table_id_examenesCaducados').DataTable({
                                                            "language": {
                                                                "search": "Buscar:",
                                                                "lengthMenu": "Items por página: _MENU_",
                                                                "info": "Items del _START_ al _END_ de _TOTAL_ items.",
                                                                "emptyTable": "Items no disponibles.",
                                                                "infoEmpty": "0 ítems.",
                                                                "paginate": {
                                                                    "next": "Siguiente",
                                                                    "previous": "Anterior",
                                                                    "first": "Primero",
                                                                    "last": "Ultimo"
                                                                }
                                                            },
                                                            "paging": true,
                                                            retrieve: true,
                                                            data: listCaducados,
                                                            rowCallback: function (row, aData) {
                                                                $('td:eq(8)', row).html('<a title="Editar" class="btn btn-warning" href="/misexamenes/' + aData.IdCalendarizacion + '"> ' +
                                                                 '<i class="fa fa-pencil">' + '</i>' + '<span class="tooltip"></span></a>');
                                                                $('td:eq(9)', row).html('<a title="Eliminar" class="btn btn-danger" href="/misexamenes/eliminar/' + aData.IdCalendarizacion + '"> ' +
                                                                     '<i class="fa fa-trash-o">' + '</i>' + '<span class="tooltip"></span></a>');
                                                            },
                                                            columns: [
                                                                 { data: 'Cuestionario' },
                                                                 { data: 'Descripcion' },
                                                                 { data: 'Intentos' },
                                                                 { data: 'TiempoExamen' },
                                                                 { data: 'Fecha' },
                                                                 { data: 'FechaCierre' },
                                                                 { data: 'NombreCurso' },
                                                                 { data: 'Estado' },
                                                                 { data: 'IdCalendarizacion' },
                                                                 { data: 'IdCalendarizacion' }
                                                            ]
                                                        });
                                                        tableCaducados.draw()
                                                    });

                                                });
                                            });

                                            ///////////////////////////
                                        });
                                    }

                                    else if (userInfo.Role == 'Administrador') {
                                        var administrador = new Y.Persona();
                                        debugger
                                        var those = that, a = administrador.load({ headers: amplify.store('authorization'), urlName: 'obtenerPorUsuario', usuario: amplify.store('userData').userName }, function () {
                                            amplify.store('datosPersona', administrador.getAttrs());
                                            var nombreCompleto = administrador.get('Nombre') + ' ' + administrador.get('Apellido');
                                            Y.one('#nombreUsuario').set('innerHTML', nombreCompleto);
                                            Y.one('#userName').set('innerHTML', nombreCompleto);

                                        });
                                    }

                                } catch (err) {
                                    console.log(err)
                                }
                            },
                            failure: function (id, response) {
                                alert(response)
                            }
                        }
                    });
            return this;
        }
    });

}, '1.0.0.0', {
    requires: ['node', 'view', 'aui-scheduler', 'charts', 'estudiante-model', 'docente-model', 'node-event-simulate',
        'calendarizacion-model-list', 'calendarizacion-model']
})